<?php

/**
 * Modelo para trabajar con las sesiones del sistema
 *
 * Modelo para trabajar con las sesiones del sistema que
 * hacen referencia al inicio de sesión y finalización de
 * la misma por parte de los usuarios
 *
 *
 * Desarrollado por la Escuela de Ingeniería de Antioquia
 *
 *
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       miBusWeb.Model
 * @fecha         Fecha Creación(yyyy-mm-dd)
 * @fecha_mod	  Fecha Modifiación
 * @cake		  CakePHP(tm) v 0.10.0.0
 */
App::uses('AppModel', 'Model');

class Sesion extends AppModel {

    /**
     * Nombre de la tabla en base de datos
     *
     * Tabla relacionada con el modelo en cuestión, este atributo será usado para la generación
     * de consultas a la base de datos
     *
     * @var string
     */
    public $useTable = "sesiones";

    /**
     * Clave primaria de la base de datos
     *
     * clave primaria que indentifica cada registro de la tabla en cuestión
     *
     * @var string
     */
    public $primaryKey = "id_sesion";

    /**
     * Nombre del campo que se muestra cuando se hacen busquedas del modelo
     *
     * Nombre del campo que se muestra cuando se hacen busquedas del modelo
     *
     * @var string
     */
    public $displayField = "id_sesion";

    /**
     * Nivel de recusividad para la busqueda de entidades relacionadas
     *
     * Este campo sirve para indicar si una consulta debe incluir las entidades
     * relacionadas con el modelo en cuestión, -1 quiere decir, 0 q.. y 1 ..
     *
     * @var int
     */
    public $recursive = -1;

    /**
     * Nombre del modelo
     *
     * Nombre del modelo para un alias las consultas y busquedas, ingresos y
     * otras interacciones con la base de datos.
     *
     * @var string
     */
    public $name = "Sesion";

    /**
     * Orden por defecto
     *
     * Orden por defecto para las consultas que se realicen a la base de datos,
     * se pueden incluir varios campos de la base de datos. Y si se especifica
     * otro orden este no se tiene en cuenta.
     *
     * @var array(string)
     */
    public $order = array("Sesion.id_sesion");

    /**
     * Validaciones de cada uno de los atributos del modelo
     */
    public $validate = array(
        "id_sesion" => array(
            "notEmpty" => array(
                "rule" => "notEmpty",
                "allowEmpty" => false,
                "required" => "update",
                "message" => "Id de la sesión no puede estar vacio",
            ),
            "naturalNumber_NoZero" => array(
                "rule" => array("naturalNumber", false),
                "message" => "Id de la sesión debe ser un número entero diferente de cero",
            ),
            "isUnique" => array(
                "rule" => array("isUnique"),
                "message" => "Id de la sesión debe ser único",
            ),
        ),
        "id_usuario" => array(
            "notEmpty" => array(
                "rule" => "notEmpty",
                "allowEmpty" => false,
                "required" => "update",
                "message" => "Id del usuario no puede estar vacio",
            ),
            "naturalNumber_NoZero" => array(
                "rule" => array("naturalNumber", false),
                "message" => "Id del usuario debe ser un número entero diferente de cero",
            )
        ),
        "fecha_inicio_sesion" => array(
            "notEmpty" => array(
                "rule" => "notEmpty",
                'required' => "create",
                "allowEmpty" => false,
                "message" => "La fecha inicio sesion no puede estar vacia",
            ),
            "datetime" => array(
                "rule" => array('datetime', 'ymd'),
                "message" => "La fecha inicio sesion debe ser en formato yyyy/mm/dd",
            ),
        ),
        "fecha_fin_sesion" => array(
            "notEmpty" => array(
                "rule" => "notEmpty",
                'required' => "create",
                "allowEmpty" => false,
                "message" => "La fecha fin sesion no puede estar vacia",
            ),
            "datetime" => array(
                "rule" => array('datetime', 'ymd'),
                "message" => "La fecha fin sesion debe ser en formato yyyy/mm/dd",
            ),
        ),
    );

    /**
     * 				DATA VALIDATION METHODS
     */
    /**
     * 				MODEL CALLBACKS METHODS
     */
    // public function beforeFind(array $queryData) {
    // }
    // public function afterFind(array $results, boolean $primary = false) {
    // }
    // public function beforeValidate(array $options = array()) {
    // }
    // public function beforeSave(array $options = array()) {
    // }
    // public function afterSave(boolean $created) {
    // }
    // public function beforeDelete(boolean $cascade = true) {
    // }
    // public function afterDelete() {
    // }

    /**
     * 				MODEL METHODS
     */
}
